-
Notifications
You must be signed in to change notification settings - Fork 453
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTPBackendRef RequestMirror Conformance Test #2819
base: main
Are you sure you want to change the base?
Conversation
/kind cleanup |
adding approvers adding reviewers |
Conformance reviewers/approvers - can I get review please @arkodg @mlavacca @sunjayBhatia @michaelbeaumont @LiorLieberman @Xunzhuo |
I've added back all the test cases for the regular filter. The backend filter has a subset of these cases. |
has this been tested against any implementation ? afaik this isnt easily possible on envoy based implementations |
I ran these tests against Istio. The backendRef variant fails as expected because they don't support that feature. |
imo lets add conformance tests if at least 1 implementation supports this case. |
+1, I think it's pretty difficult to add conformance tests before at least one implementation supports a feature. If we were to do that, I think we'd need to introduce some concept of conformance test stability and consider untested conformance tests as a non-blocking reference point. |
But then an implementation can't advertise the support this feature on the GatewayClass. They'll have to wait for a new gateway api release to do this.
Then why is this functionality in the API? If we have the shape of feature in our API we can write conformance for it |
Also the test is identical to the pre-split filter - so for this case I wouldn't be concerned with stability of the conformance test. |
I dropped path logic in filter so we can re-use the same test for the backend
84f167e
to
eb2197f
Compare
I +1 what @arkodg and @robscott said about waiting to have at least one implementation on board with this feature. In my opinion, conformance tests are not intended to shape the API, but instead to validate API implementations. Regardless of the nature of the test (this test could be straightforward, as it shares the same logic of the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dprotaso Thanks for adding this!
In general, I think this looks good:
/approve
However, one thing that does give me some pause: We haven't really seen any support from other implementations saying that this test makes sense and works for them?
/hold
I can see at least two ways we can go about this. We could leave this PR on hold and do outreach, try to get some others to utilize it. However, we might need some kind of "test is experimental" flag so as to allow a soak period for new tests in lieu of immediate feedback from implementations? For the latter, we have a bit of a precedent in that we used an +experimental
Go build tag for several months to stage in the version 2 of our conformance test suite (the one that introduced conformance reports). I'm not necessarily advocating for anything in particular yet, would like to know your thoughts @dprotaso ?
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: dprotaso, shaneutt The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
PR needs rebase. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
What type of PR is this?
/kind cleanup
/kind test
/area conformance
What this PR does / why we need it
There's currently no conformance test for this feature which is 'Extended'
Additional notes
I dropped path logic in filter so we can re-use the same test for the backend